﻿using Volo.Abp.Domain.Entities;
using Volo.Abp.Domain.Entities.Auditing;

namespace FlyingEye.Devices
{
    /// <summary>
    /// 设备配置信息
    /// </summary>
    public class DeviceConfigurationModel : AuditedEntity<Guid>
    {
#pragma warning disable CS8618 // 在退出构造函数时，不可为 null 的字段必须包含非 null 值。请考虑声明为可以为 null。
        public DeviceConfigurationModel()
#pragma warning restore CS8618 // 在退出构造函数时，不可为 null 的字段必须包含非 null 值。请考虑声明为可以为 null。
        {
            // automapper 调用
        }

        public DeviceConfigurationModel(
            Guid id,
            string resourceId,
            string deviceName,
            string iPAddress,
            int port,
            string deviceType,
            byte? slot,
            byte? rack) : base(id)
        {
            ResourceId = resourceId;
            DeviceName = deviceName;
            IPAddress = iPAddress;
            Port = port;
            DeviceType = deviceType;
            Slot = slot;
            Rack = rack;
        }

        /// <summary>
        /// 设备主机资源 ID
        /// </summary>
        public string ResourceId { get; set; }

        /// <summary>
        /// 给 PLC 设备定义的一个逻辑名称，通常是设备资源号
        /// </summary>
        public string DeviceName { get; set; }

        public string IPAddress { get; set; }

        public int Port { get; set; }

        /// <summary>
        /// <see cref="PlcTypes"/>
        /// </summary>
        public string DeviceType { get; set; }

        /// <summary>
        /// 西门子 PLC 需要设置的插槽号
        /// </summary>
        public byte? Slot { get; set; }

        /// <summary>
        /// 西门子 PLC 需要设置的机架号
        /// </summary>
        public byte? Rack { get; set; }
    }
}
